// var i;
// var $resKeeper = require("./ResKeeper");
// var $excel = require("./Excel");
// var $gameGlobalVariable = require("./GameGlobalVariable");
// var $buffMag = require("./BuffMag");
// var $uI_MosterLogic = require("./UI_MosterLogic");
// var $uI_BulletMove = require("./UI_BulletMove");
// var h = cc._decorator;
// var f = h.ccclass;
// var g = (h.property, h.inspector);
// var _ = (function (e) {
//     function t() {
//         return (null !== e && e.apply(this, arguments)) || this;
//     }
//     __extends(t, e);
//     t.prototype.onCollisionEnter = function (e, t) {
//         $gameGlobalVariable.GameGlobalVariable.playHitLiulian();
//         var o = t.node.parent.getComponent($uI_BulletMove.default);
//         var n = e.node.getComponent($uI_MosterLogic.default);
//         if (!n.isDie) {
//             $buffMag.BuffMgr.mosterBeHit(n, o.attackfang);
//             n.beAttack(o);
//             if (!o.isChaoJi) {
//                 o.hideBullet();
//             }
//             var i = $excel.Excel.shuiguobuff(o.attackfang.sgtianfuid);
//             if (11 == i.buffefftype) {
//                 var a = $excel.Excel.shuiguoguaiwu(n.mosterId);
//                 if (!o.isChaoJi && Math.random() < (i.probability / 100) * a.resistance) {
//                     n.backTui(i.value[0]);
//                 }
//             }
//         }
//     };
//     return __decorate([f], t);
// })($resKeeper.default);
// exports.default = _;


// import ResKeeper from './ResKeeper';
// import { Excel } from './Excel';
// import { GameGlobalVariable } from './GameGlobalVariable';
// import { BuffMgr } from './BuffMag';
// import  UI_MosterLogic from './UI_MosterLogic';
// import UI_BulletMove  from './UI_BulletMove';

// const { ccclass, property, inspector } = cc._decorator;

// /**
//  * 建议类名: CollisionHandler
//  */
// @ccclass
// class UI_BulletMoveCollider extends ResKeeper {
//     /**
//      * 当碰撞开始时触发
//      * @param other 碰撞的另一个碰撞体
//      * @param self 自身的碰撞体
//      * 建议方法名: handleCollisionEnter
//      */
//     onCollisionEnter(other: cc.Collider, self: cc.Collider): void {
//         GameGlobalVariable.playHitLiulian();
//         const bulletMoveComponent = self.node.parent.getComponent(UI_BulletMove);
//         const monsterLogicComponent = other.node.getComponent(UI_MosterLogic);

//         if (!monsterLogicComponent.isDie) {
//             BuffMgr.mosterBeHit(monsterLogicComponent, bulletMoveComponent.attackfang);
//             monsterLogicComponent.beAttack(bulletMoveComponent);

//             if (!bulletMoveComponent.isChaoJi) {
//                 bulletMoveComponent.hideBullet();
//             }

//             const buffInfo = Excel.shuiguobuff(bulletMoveComponent.attackfang.sgtianfuid);
//             if (buffInfo.buffefftype === 11) {
//                 const monsterInfo = Excel.shuiguoguaiwu(monsterLogicComponent.mosterId);
//                 if (!bulletMoveComponent.isChaoJi && Math.random() < (buffInfo.probability / 100) * monsterInfo.resistance) {
//                     monsterLogicComponent.backTui(buffInfo.value[0]);
//                 }
//             }
//         }
//     }
// }

// export default UI_BulletMoveCollider;

import ResKeeper from './ResKeeper';
import { Excel } from './Excel';
import { GameGlobalVariable } from './GameGlobalVariable';
import { BuffMgr } from './BuffMag';
import ViewMosterLogic from './UI_MosterLogic';
import ViewBulletMove from './UI_BulletMove';

const { ccclass, property, inspector } = cc._decorator;

/**
 * 建议类名: CollisionHandler
 */
@ccclass
class ViewBulletMoveCollider extends ResKeeper {
    /**
     * 当碰撞开始时触发
     * @param other 碰撞的另一个碰撞体
     * @param self 自身的碰撞体
     * 建议方法名: handleCollisionEnter
     */
    onCollisionEnter(otherCollider: cc.Collider, selfCollider: cc.Collider): void {
        // 播放击中榴莲的音效
        GameGlobalVariable.playHitDurianSoundEffect();

        // 获取子弹移动组件
        const bulletMoveComp = selfCollider.node.parent.getComponent(ViewBulletMove);
        // 获取怪物逻辑组件
        const monsterLogicComp = otherCollider.node.getComponent(ViewMosterLogic);

        // 检查怪物是否死亡
        if (!monsterLogicComp.isDie) {
            // 对怪物进行Buff处理
            BuffMgr.monsterHit(monsterLogicComp, bulletMoveComp.attackfang);
            // 对怪物进行被攻击处理
            monsterLogicComp.receiveAttack(bulletMoveComp);

            // 如果子弹不是超级模式，隐藏子弹
            if (!bulletMoveComp.isChaoJi) {
                bulletMoveComp.hideBullet();
            }

            // 获取Buff信息
            const buffInfo = Excel.shuiguobuff(bulletMoveComp.attackfang.sgtianfuid);
            // 检查Buff效果类型是否为11
            if (buffInfo.buffefftype === 11) {
                // 获取怪物信息
                const monsterInfo = Excel.shuiguoguaiwu(monsterLogicComp.mosterId);
                // 根据概率和怪物抵抗力决定是否后退
                if (!bulletMoveComp.isChaoJi && Math.random() < (buffInfo.probability / 100) * monsterInfo.resistance) {
                    // 怪物后退
                    monsterLogicComp.knockback(buffInfo.value[0]);
                }
            }
        }
    }
}

export default ViewBulletMoveCollider;